package com.ruoyi.project.infoprojectbasetype.service.impl;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.project.infoprojectbasetype.mapper.InfoProjectBaseTypeMapper;
import com.ruoyi.project.infoprojectbasetype.domain.InfoProjectBaseType;
import com.ruoyi.project.infoprojectbasetype.service.IInfoProjectBaseTypeService;

/**
 * 基础库项目类型Service业务层处理
 * 
 * @author ruoyi
 * @date 2022-11-28
 */
@Service
public class InfoProjectBaseTypeServiceImpl implements IInfoProjectBaseTypeService 
{
    @Autowired
    private InfoProjectBaseTypeMapper infoProjectBaseTypeMapper;

    /**
     * 查询基础库项目类型
     * 
     * @param id 基础库项目类型主键
     * @return 基础库项目类型
     */
    @Override
    public InfoProjectBaseType selectInfoProjectBaseTypeById(Long id)
    {
        InfoProjectBaseType infoProjectBaseType = infoProjectBaseTypeMapper.selectInfoProjectBaseTypeById(id);
        if (infoProjectBaseType.getParentId() != 0){
            infoProjectBaseType.setParentName(infoProjectBaseTypeMapper.selectInfoProjectBaseTypeById(infoProjectBaseType.getParentId()).getName());
        }
        return infoProjectBaseType;
    }

    /**
     * 查询基础库项目类型列表
     * 
     * @param infoProjectBaseType 基础库项目类型
     * @return 基础库项目类型
     */
    @Override
    public List<InfoProjectBaseType> selectInfoProjectBaseTypeList(InfoProjectBaseType infoProjectBaseType)
    {
        return infoProjectBaseTypeMapper.selectInfoProjectBaseTypeList(infoProjectBaseType);
    }

    /**
     * 新增基础库项目类型
     * 
     * @param infoProjectBaseType 基础库项目类型
     * @return 结果
     */
    @Override
    public int insertInfoProjectBaseType(InfoProjectBaseType infoProjectBaseType)
    {
        return infoProjectBaseTypeMapper.insertInfoProjectBaseType(infoProjectBaseType);
    }

    /**
     * 修改基础库项目类型
     * 
     * @param infoProjectBaseType 基础库项目类型
     * @return 结果
     */
    @Override
    public int updateInfoProjectBaseType(InfoProjectBaseType infoProjectBaseType)
    {
        List<InfoProjectBaseType> infoProjectBaseTypes = infoProjectBaseTypeMapper.selectInfoProjectBaseTypeByParenetId(infoProjectBaseType.getId());

        if(infoProjectBaseTypes != null){
            return 500;
        }

        return infoProjectBaseTypeMapper.updateInfoProjectBaseType(infoProjectBaseType);
    }

    /**
     * 批量删除基础库项目类型
     * 
     * @param ids 需要删除的基础库项目类型主键
     * @return 结果
     */
    @Override
    public int deleteInfoProjectBaseTypeByIds(Long[] ids)
    {
        return infoProjectBaseTypeMapper.deleteInfoProjectBaseTypeByIds(ids);
    }

    /**
     * 删除基础库项目类型信息
     * 
     * @param id 基础库项目类型主键
     * @return 结果
     */
    @Override
    public int deleteInfoProjectBaseTypeById(Long id)
    {
        return infoProjectBaseTypeMapper.deleteInfoProjectBaseTypeById(id);
    }
}
